#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<unordered_map>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;

//typedef unsigned long long int LL;
//
//int T, n;
//
//const int N = 1e6 + 10;
//
//LL* a = new LL[N]{ 0 };
//unordered_map<int, int> _snows; //�洢ÿƬѩ���������±�
//int main()
//{
//	cin >> T;
//	vector<int> ret;
//	for (int k = 1; k <= T; k++)
//	{
//		cin >> n;
//		for (int i = 1; i <= n; i++)
//		{
//			cin >> a[i];
//		}
//		int left = 1, right = 1, length = 0;
//		while (right <= n)
//		{
//			auto it = _snows.find(a[right]);
//			if (it == _snows.end())
//			{
//				_snows[a[right]] = right;
//			}
//			else
//			{
//				int index = it->second;
//				length = max(length, right - left);
//				for (int i = left; i <= index; i++)
//				{
//					_snows.erase(a[i]);
//				}
//				left = index + 1;
//			}
//			right++;
//		}
//		ret.push_back(length);
//		_snows.clear();
//	}
//
//	for (auto& x : ret)
//	{
//		cout << x << endl;
//	}
//	
//
//	return 0;
//}


//const int N = 1e6 + 10;
//
//int* a = new int[N] {0};
//int n, m;
//
//
//
//int main()
//{
//	//存储每位画家的编号以及出现的次数
//	unordered_map<int, int> _hash;
//	vector<pair<int,pair<int,int>>> _ret;
//	cin >> n >> m;
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> a[i];
//	}
//	
//	int left = 1, right = 1;
//	while (right <= n)
//	{
//		_hash[a[right]]++;
//		if(_hash.size() == m)
//		{
//			auto it = _hash.find(a[left]);
//			while(it->second > 1)
//			{
//				left++;
//				it->second--;
//				it = _hash.find(a[left]);
//			}
//			_ret.push_back({ right - left + 1, {left,right}});
//			_hash.erase(a[left++]);
//
//		}
//		right++;
//	}
//
//	sort(_ret.begin(), _ret.end());
//	cout << _ret[0].second.first << " " << _ret[0].second.second;
//	
//	return 0;
//}



//string s;
//unordered_map<char, int> _hash; //存储s中每个字符出现的次数
//int main()
//{
//    cin >> s;
//    int n = s.size();
//    s = '_' + s;
//    int left = 1, right = 1, length = INT_MAX;
//    while (right <= n)
//    {
//        _hash[s[right]]++;
//        if (_hash.size() == 26)
//        {
//            int count = _hash[s[left]];
//            while (count > 1)
//            {
//                _hash[s[left]]--;
//                count = _hash[s[++left]];
//            }
//            length = min(length, right - left + 1);
//            _hash.erase(s[left++]);
//        }
//        right++;
//    }
//
//    cout << length << endl;
//
//    return 0;
//}


